查看原文
其他

爬虫之数据获取的3种方法

2017-06-22 shadow 科技Mix设计Lab


封面由ACE Land 人工智能设计师设计,最近升级了一点点小能力,可以给文字配上Icon啦~


ACE Land的成长记录:


DIY一个人工智能设计师_v0.0.1

ACE Land火星深造完回来



以下为正文:


这是在开发一个持续监测电商数据变化的工具过程中的经验。

集爬虫、数据可视化为一体的工具


爬取网上的数据,最笨也最有效的方法就是解析HTML标签,通过class或者id或者HTML元素之间的位置关系(父子、前后)来选择到目标标签,然后通过getAttributegetComputedStyleinnerText等来获取需要的数据。


之前写过2篇文章,都涉及到这种最有效的方法:


技能之谷歌Chrome爬虫 

可视化爬虫SPY 


在实践中,我发现根据网站的技术实现,还有更巧妙的数据获取方式:


分析页面的HTML元素绑定的js事件


下拉刷新一般通过一个loading来处理,所以我们可以分析loading的元素标签,classid或其他属性,找到驱动它的js函数,调用即可。


比如:www.wineyun.com

发现下拉刷新的时候,会出现一个动画,是通过一个gif的实现的,找到这个标签的classindex_loading



那怎么找都它绑定的js函数呢。

CTRL+F,输入index_loading,很顺利,在页面里就找到了调用函数,即getGoodsList



那我只要按他的逻辑调用这个函数就可以快速的获取所有异步加载的数据啦~


Ps

可以直接在Console面板中输入:getGoodsList(),即可获取一次异步加载的内容;

也可以改写getGoodsList函数,把获取的结果直接存入我们自己的数据库。


通过开发者工具Network寻找到接口URL


比如huaban.com

下拉页面,打开开发者工具Network,查看加载的内容




发现异步加载会调用?page=3的接口,点击查看下具体的情况,Response可以看到服务器返回的数据,如下



就是我们要找的数据,所以直接把Request URL



直接贴浏览器的地址栏就可以看到返回的json文件啦:



以上是3个技巧,熟练掌握,提示编写爬虫的效率。






打一则广告:


最近在知乎上开的LIVE,

聊聊设计师做编程的那些事

长按二维码,进入





本公众号定期更新关于

设计师、程序员发挥创意

互相融合的指南、作品。


主要技术栈:

nodejs、react native、electron


欢迎关注,转发~


欢迎长按二维码

关注本号


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存